Late as always, but I managed to create my own secret level button. This is what I got right now inside its code:

ifpdistl 1024 ifhitspace ifp palive ifp pfacing ifcansee ifvare SECLV 0
{
  lockplayer 12 setplayer[THISACTOR].timebeforeexit 8
  ifvare VOLUME 0 setvar SECLV 5 else ifvare VOLUME 1 setvar SECLV 6 else setvar SECLV 7
}

And inside EVENT_DISPLAYBONUSSCREEN I placed this line:

ifvarn SECLV 0 { setuserdef[THISACTOR].level_number SECLV setvar SECLV 0 }

SECLV is a gamevar that holds the secret level's number. I tried with startlevel after the bonus screen as you suggested, but it didn't work; the level name was correctly shown in the loading screen, but then the loaded level was another different. 